package com.ng.desktop.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.apache.commons.lang.StringUtils;
import org.hibernate.annotations.ForeignKey;

import com.ng.framework.util.NGUtil;

/**
 * @author psabbate
 * 
 */
@Entity
@Table(name = "TH_ALIMENTO")
public class Alimento {

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "ID", nullable = false)
	private Long id;

	@Column(name = "NOMBRE", nullable = false, length = 60)
	private String nombre;

	@ManyToOne
	@JoinColumn(name = "ID_CATEGORIA", referencedColumnName = "ID")
	@ForeignKey(name = "FK_CATEGORIA")
	private Categoria categoria;

	// Datos Porción.

	@Column(name = "CANTIDAD", nullable = false)
	private Double cantidad;

	@Column(name = "CANTIDAD_FRACCION", nullable = false)
	private String cantidadFraccion;

	@ManyToOne
	@JoinColumn(name = "ID_UNIDAD_MEDIDA", referencedColumnName = "ID")
	@ForeignKey(name = "FK_UNIDAD_MEDIDA")
	private UnidadMedida unidadMedida;

	public Long getId() {
		return id;
	}

	public String getNombre() {
		return nombre;
	}

	public Categoria getCategoria() {
		return categoria;
	}

	public Double getCantidad() {
		return cantidad;
	}

	public UnidadMedida getUnidadMedida() {
		return unidadMedida;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	public void setCantidad(Double cantidad) {
		this.cantidad = cantidad;
	}

	public void setUnidadMedida(UnidadMedida unidadMedida) {
		this.unidadMedida = unidadMedida;
	}

	public String getCantidadFraccion() {
		if (StringUtils.isEmpty(this.cantidadFraccion)) {
			if (this.cantidad != null) {
				this.cantidadFraccion = NGUtil.doubleToFraction(this.cantidad, true);
			}
		}
		return cantidadFraccion;
	}

	public void setCantidadFraccion(String cantidadFraccion) {
		this.cantidadFraccion = cantidadFraccion;
	}

	@Override
	public String toString() {
		return this.nombre;
	}
}
